package com.xinzhidi.web.controlset.domain.dto;

import com.xinzhidi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;


/**
 * 一键调控DTO
 *
 * @author cx
 * @date 2023-06-27
 */
@ApiModel(value = "一键调控DTO")
@Data
@EqualsAndHashCode(callSuper = false)
public class BatchControlSetDto {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "类型（0：小区  2：楼栋  2：单元 3：住户）")
    @NotBlank(message = "类型不能为空")
    private String type;

    @ApiModelProperty(value = "小区id")
    @NotNull(message = "小区id不能为空")
    @Min(value = 0, message = "小区id不能比0小")
    private Long plotId;

    @ApiModelProperty(value = "楼栋id")
    private Long buildId;

    @ApiModelProperty(value = "单元id")
    private Long unitId;

    @ApiModelProperty(value = "调控方法（1：手动调控  2：自动调控）")
    @NotBlank(message = "调控方法（1：手动调控  2：自动调控）不能为空")
    @Size(max = 100, message = "调控方法（1：手动调控  2：自动调控）长度不能大于100")
    private String regulationMethod;

    @ApiModelProperty(value = "优先级（1：楼栋  2：单元）")
    private Integer priority;

    @ApiModelProperty(value = "调控策略")
    @NotBlank(message = "调控策略不能为空")
    @Size(max = 100, message = "调控策略长度不能大于100")
    private String controlStrategy;

    @ApiModelProperty(value = "楼栋阀门默认开度")
    @Excel(name = "楼栋阀门默认开度")
    private Integer buildingValveOpen;

    @ApiModelProperty(value = "单元阀门默认开度")
    @Excel(name = "单元阀门默认开度")
    private Integer unitValveOpen;

    @ApiModelProperty(value = "住户阀门默认开度")
    @Excel(name = "住户阀门默认开度")
    private Integer householdValveOpen;

    @ApiModelProperty(value = "阀门调整步进值")
    @Excel(name = "阀门调整步进值")
    private Integer stepValue;

    @ApiModelProperty(value = "回水温度目标值")
    @Excel(name = "回水温度目标值")
    private BigDecimal returnWaterTemperature;

    @ApiModelProperty(value = "回水温度目标值波动值")
    @Excel(name = "回水温度目标值波动值")
    private BigDecimal returnWaterTemperatureFluctuating;

    @ApiModelProperty(value = "供回水平均温度目标值")
    @Excel(name = "供回水平均温度目标值")
    private BigDecimal farReturnTemperature;

    @ApiModelProperty(value = "供回水平均温度目标值波动值")
    @Excel(name = "供回水平均温度目标值波动值")
    private BigDecimal farReturnTemperatureFluctuating;

    @ApiModelProperty(value = "室内温度目标值")
    @Excel(name = "室内温度目标值")
    private BigDecimal targetRoomTemperature;

    @ApiModelProperty(value = "室内温度目标值波动值")
    @Excel(name = "室内温度目标值波动值")
    private BigDecimal targetRoomTemperatureFluctuating;

    @ApiModelProperty(value = "流量目标值")
    @Excel(name = "流量目标值")
    private BigDecimal velocityFlow;

    @ApiModelProperty(value = "流量目标值波动值")
    @Excel(name = "流量目标值波动值")
    private BigDecimal velocityFlowFluctuating;

    @ApiModelProperty(value = "热量目标值")
    @Excel(name = "热量目标值")
    private BigDecimal heat;

    @ApiModelProperty(value = "热量目标值波动值")
    @Excel(name = "热量目标值波动值")
    private BigDecimal heatFluctuating;

}
